<?php
/**
* 功能: MEMECACED基础操作类
* 创建日期:Thu Sep 23 11:34:12 CST 2010
* 最后更新:
* 作者: slash
*/ 
class MemcacheBase {

	var $isPhpExt;
	var $connect;
	var $prefix;  //前缀
	var $expires = 86400; //one day
	
	function MemcacheBase() {
		//判断是否有MEMCACHED扩展
		$this->isPhpExt = class_exists("Memcache");
		if(!$this->isPhpExt)
		{
			return false;
		}
		$this->connect = new Memcache();
	}
	/**
	 * 初始化连接,单个
	 *
	 * @param unknown_type $host 主机地址
	 * @param unknown_type $port 主机端口号
	 */
	public function setConnect($host,$port)
	{
		if(empty($host) || empty($port))
			return false;
		$this->connect->addServer($host, $port);
		//$this->connect->setOption(Memcached::OPT_COMPRESSION, false);
	}
	/**
	 * 连接一个服务组
	 * 
	 * @param unknown_type MEM服务群组
	 * @return unknown
	 */
	public function setConnects($hostArr)
	{
		if(!is_array($hostArr))
			return false;
		//dump($hostArr);
		$this->connect->addServers($hostArr);
		//$res = $this->connect->addServers($hostArr);
		//if(false == $res) {
		//	//echo "connect error.";
		//	return false;
		//}
		//是否压缩
		$this->connect->setOption(Memcached::OPT_COMPRESSION, false);
		
		//return true;
	}

	public function init($type){
		$this->prefix = $type;
	}
	/**
	 * 向MEMCACHE中添加内容
	 *
	 * @param unknown_type $key  KEY值
	 * @param unknown_type $value 内容值
	 * @return 处理后返回结果
	 */
	public function setValue($key,$value,$expires=0)
	{
		if(!$this->connect)
			return false;
		if($expires)
			$this->expires = $expires;
		return $this->connect->set($this->prefix.$key,$value,$this->expires);
	}
	/**
	 * 获得KEY对应的值
	 *
	 * @param unknown_type $key  字符串
	 * @return 字符串
	 */
	public function getValue($key)
	{
		if(!$this->connect)
			return false;
		//return $this->connect->get($this->prefix.$key);
		if(is_array($key)){
			foreach($key as $v){
				$new_key[] = $this->prefix.$v;
			}
			$array = $this->connect->getMulti($new_key);
		}else{
			$array = $this->connect->get($this->prefix.$key);
		}
		//print_r($array);
		//echo "从MM里输出";
		return $array;
	}
	/**
	 * 删除对应KEY里边的值
	 *
	 * @param unknown_type $key
	 * @return unknown
	 */
	public function delValue($key)
	{
		if(!$this->connect)
			return false;
		return $this->connect->delete($this->prefix.$key);
	}
	
	/**
	 * 向MEMCACHE中添加内容
	 *
	 * @param array $items   KEY值数组
	 * @param int $maxLeft 
	 * @return 处理后返回结果
	 * @author Mirze 2010-09-23
	 */
	public function setMulti($items,$maxLeft=0)
	{
		if(!$this->connect)
			return false;
		return $this->connect->setMulti($items,$maxLeft,$this->expires);
	}
	/**
	 * 替换更新对应KEY里边的值
	 *
	 * @param array $key   KEY值
	 * @param int $value 内容值
	 * @return 处理后返回结果
	 * @author Mirze 2010-09-23
	 */
	public function replaceValue($key,$value)
	{
		if(!$this->connect)
			return false;
		return $this->connect->replace($this->prefix.$key,$value,$this->expires);
	}
	
	/**
	 * 删掉缓存所有数据
	 */	
	public function flushValue()
	{
		if(!$this->connect)
			return false;
		return $this->connect->flush();
	}
	
}
?>